import Vue from 'vue'
import Vuex from 'vuex'
import student from './student'
Vue.use(Vuex);

export default new Vuex.Store({
    //导入外部模块
    modules:{
     student,
    },
   state:{
       count:0
   },
   getters:{
   myCount(state){
       return state.count*3
       }
   },
    mutations:{
        increment(state){
         state.count++;
        }
    },
    // actions用来解决异步流程来改变state数据。
// 而matution是直接进行同步操作的，如果你在mutations里进行异步操作，
// 你会发现没用，并不会起任何效果
// 只有通过action=>mutations=>states,
    //2.接受dispatch传递过来的方法和参数
  actions: {//我们直接把下面的context当成是上面的mutations属性即可
    incrementSync (context,Object) {
	    //处理异步操作
        setTimeout(()=>{
	        //3.通过commit提交一个名为increment的mutation
//action 函数接受一个与 store 实例具有相同方法和属性的 context 对象，因此你可以调用 context.commit 提交一个 mutation
            context.commit('increment',Object)
        },3000)
    }
  }
})
